[INFO] cloning repository https://github.com/amuricys/sars
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/amuricys/sars" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Famuricys%2Fsars", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Famuricys%2Fsars'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] ab2fa262b29f0e033dc7828120c08dd5c33082c8
[INFO] checking amuricys/sars against master#e6e4f7ed1589e03bc2f6c5931c1a72e7947e8682 for beta-170-4
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Famuricys%2Fsars" "/workspace/builds/worker-1-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc2/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/amuricys/sars on toolchain e6e4f7ed1589e03bc2f6c5931c1a72e7947e8682
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+e6e4f7ed1589e03bc2f6c5931c1a72e7947e8682" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/amuricys/sars
[INFO] finished tweaking git repo https://github.com/amuricys/sars
[INFO] tweaked toml for git repo https://github.com/amuricys/sars written to /workspace/builds/worker-1-tc2/source/Cargo.toml
[INFO] crate git repo https://github.com/amuricys/sars already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+e6e4f7ed1589e03bc2f6c5931c1a72e7947e8682" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:19e73879b68f455e41552ea35293514db52ea292d993f571636dbffedb77a1ee" "/opt/rustwide/cargo-home/bin/cargo" "+e6e4f7ed1589e03bc2f6c5931c1a72e7947e8682" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] dc546e956067d68e688e0f78d7f77be38fc22ab8441e78609d6e511fa3f4cef8
[INFO] running `Command { std: "docker" "start" "-a" "dc546e956067d68e688e0f78d7f77be38fc22ab8441e78609d6e511fa3f4cef8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "dc546e956067d68e688e0f78d7f77be38fc22ab8441e78609d6e511fa3f4cef8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "dc546e956067d68e688e0f78d7f77be38fc22ab8441e78609d6e511fa3f4cef8", kill_on_drop: false }`
[INFO] [stdout] dc546e956067d68e688e0f78d7f77be38fc22ab8441e78609d6e511fa3f4cef8
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:19e73879b68f455e41552ea35293514db52ea292d993f571636dbffedb77a1ee" "/opt/rustwide/cargo-home/bin/cargo" "+e6e4f7ed1589e03bc2f6c5931c1a72e7947e8682" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 192e51f2c0b4dd67cee9039652849351eb8459d8ee0b87116eeb583eb8fd570e
[INFO] running `Command { std: "docker" "start" "-a" "192e51f2c0b4dd67cee9039652849351eb8459d8ee0b87116eeb583eb8fd570e", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.97
[INFO] [stderr]    Compiling xml-rs v0.8.3
[INFO] [stderr]    Compiling num-traits v0.2.14
[INFO] [stderr]    Compiling log v0.4.11
[INFO] [stderr]    Compiling memoffset v0.5.5
[INFO] [stderr]    Compiling libloading v0.6.2
[INFO] [stderr]     Checking piston-float v1.0.0
[INFO] [stderr]     Checking rustc-hash v1.1.0
[INFO] [stderr]    Compiling proc-macro2 v1.0.19
[INFO] [stderr]    Compiling syn v1.0.35
[INFO] [stderr]    Compiling serde v1.0.117
[INFO] [stderr]    Compiling serde_derive v1.0.114
[INFO] [stderr]    Compiling num-integer v0.1.44
[INFO] [stderr]    Compiling num-bigint v0.3.2
[INFO] [stderr]    Compiling num-iter v0.1.42
[INFO] [stderr]     Checking piston-viewport v1.0.0
[INFO] [stderr]    Compiling num-rational v0.3.2
[INFO] [stderr]    Compiling rayon-core v1.7.1
[INFO] [stderr]    Compiling typenum v1.13.0
[INFO] [stderr]     Checking adler32 v1.1.0
[INFO] [stderr]    Compiling pkg-config v0.3.18
[INFO] [stderr]     Checking crossbeam-epoch v0.8.2
[INFO] [stderr]     Checking dlib v0.4.2
[INFO] [stderr]     Checking crossbeam-queue v0.2.3
[INFO] [stderr]     Checking wayland-sys v0.21.13
[INFO] [stderr]     Checking wayland-sys v0.23.6
[INFO] [stderr]    Compiling rayon v1.3.1
[INFO] [stderr]     Checking miniz_oxide v0.3.7
[INFO] [stderr]    Compiling cc v1.0.58
[INFO] [stderr]     Checking piston-graphics_api_version v1.0.0
[INFO] [stderr]     Checking piston-texture v0.8.0
[INFO] [stderr]     Checking deflate v0.8.6
[INFO] [stderr]     Checking vecmath v1.0.0
[INFO] [stderr]     Checking draw_state v0.8.0
[INFO] [stderr]     Checking crossbeam-deque v0.7.3
[INFO] [stderr]    Compiling wayland-scanner v0.21.13
[INFO] [stderr]    Compiling wayland-scanner v0.23.6
[INFO] [stderr]    Compiling gl_generator v0.13.1
[INFO] [stderr]    Compiling gl_generator v0.10.0
[INFO] [stderr]    Compiling quote v1.0.7
[INFO] [stderr]     Checking lock_api v0.3.4
[INFO] [stderr]     Checking piston-graphics_api_version v0.2.0
[INFO] [stderr]    Compiling x11-dl v2.18.5
[INFO] [stderr]     Checking num_cpus v1.13.0
[INFO] [stderr]     Checking nix v0.14.1
[INFO] [stderr]     Checking memmap v0.7.0
[INFO] [stderr]     Checking approx v0.3.2
[INFO] [stderr]     Checking ordered-float v1.1.0
[INFO] [stderr]     Checking line_drawing v0.7.0
[INFO] [stderr]    Compiling xcb v0.9.0
[INFO] [stderr]     Checking parking_lot_core v0.6.2
[INFO] [stderr]     Checking read_color v1.0.0
[INFO] [stderr]     Checking rusttype v0.8.3
[INFO] [stderr]     Checking interpolation v0.2.0
[INFO] [stderr]     Checking parking_lot v0.9.0
[INFO] [stderr]     Checking raw-window-handle v0.3.3
[INFO] [stderr]     Checking shared_library v0.1.9
[INFO] [stderr]     Checking tiff v0.5.0
[INFO] [stderr]     Checking png v0.16.7
[INFO] [stderr]     Checking rusttype v0.7.9
[INFO] [stderr]    Compiling glutin_glx_sys v0.1.6
[INFO] [stderr]    Compiling libloading v0.5.2
[INFO] [stderr]     Checking andrew v0.2.1
[INFO] [stderr]    Compiling glutin_egl_sys v0.1.4
[INFO] [stderr]    Compiling gl v0.11.0
[INFO] [stderr]     Checking generic-array v0.13.3
[INFO] [stderr]     Checking generic-array v0.14.4
[INFO] [stderr]     Checking generic-array v0.12.4
[INFO] [stderr]     Checking gfx_core v0.9.2
[INFO] [stderr]    Compiling gl_generator v0.14.0
[INFO] [stderr]     Checking stable_deref_trait v1.2.0
[INFO] [stderr]    Compiling heapless v0.6.1
[INFO] [stderr]     Checking bytemuck v1.3.0
[INFO] [stderr]     Checking as-slice v0.1.5
[INFO] [stderr]    Compiling wayland-client v0.21.13
[INFO] [stderr]    Compiling wayland-protocols v0.21.13
[INFO] [stderr]    Compiling wayland-client v0.23.6
[INFO] [stderr]    Compiling wayland-protocols v0.23.6
[INFO] [stderr]     Checking osmesa-sys v0.1.2
[INFO] [stderr]     Checking hash32 v0.1.1
[INFO] [stderr]     Checking fixedbitset v0.1.9
[INFO] [stderr]    Compiling memchr v2.4.0
[INFO] [stderr]    Compiling gfx_gl v0.6.1
[INFO] [stderr]     Checking getrandom v0.1.14
[INFO] [stderr]     Checking petgraph v0.4.13
[INFO] [stderr]     Checking gfx v0.18.2
[INFO] [stderr]     Checking piston2d-graphics v0.37.0
[INFO] [stderr]     Checking num-complex v0.3.1
[INFO] [stderr]     Checking shader_version v0.7.0
[INFO] [stderr]    Compiling indexmap v1.6.2
[INFO] [stderr]     Checking jpeg-decoder v0.1.20
[INFO] [stderr]     Checking pdqselect v0.1.0
[INFO] [stderr]     Checking piston-shaders_graphics2d v0.3.1
[INFO] [stderr]     Checking smallvec v1.6.1
[INFO] [stderr]     Checking wayland-commons v0.21.13
[INFO] [stderr]     Checking wayland-commons v0.23.6
[INFO] [stderr]     Checking instant v0.1.9
[INFO] [stderr]     Checking rand_core v0.5.1
[INFO] [stderr]     Checking num v0.3.1
[INFO] [stderr]     Checking rstar v0.8.3
[INFO] [stderr]     Checking approx v0.4.0
[INFO] [stderr]     Checking shader_version v0.6.0
[INFO] [stderr]     Checking hashbrown v0.9.1
[INFO] [stderr]     Checking ppv-lite86 v0.2.8
[INFO] [stderr]     Checking piston2d-graphics v0.36.0
[INFO] [stderr]     Checking daggy v0.5.0
[INFO] [stderr]     Checking itertools v0.9.0
[INFO] [stderr]     Checking image v0.23.7
[INFO] [stderr]     Checking geographiclib-rs v0.2.0
[INFO] [stderr]     Checking aho-corasick v0.7.18
[INFO] [stderr]     Checking geo-types v0.7.2
[INFO] [stderr]     Checking rand_chacha v0.2.2
[INFO] [stderr]     Checking robust v0.2.3
[INFO] [stderr]     Checking fixedbitset v0.3.2
[INFO] [stderr]     Checking rand v0.7.3
[INFO] [stderr]     Checking toml v0.5.7
[INFO] [stderr]     Checking geo v0.18.0
[INFO] [stderr]     Checking float-cmp v0.8.0
[INFO] [stderr]     Checking vec1 v1.6.0
[INFO] [stderr]     Checking find_folder v0.3.0
[INFO] [stderr]     Checking pathfinding v2.1.1
[INFO] [stderr]     Checking regex v1.5.4
[INFO] [stderr]    Compiling conrod_derive v0.73.0
[INFO] [stderr]     Checking gfx_device_gl v0.16.2
[INFO] [stderr]     Checking piston-gfx_texture v0.41.0
[INFO] [stderr]     Checking piston2d-opengl_graphics v0.72.0
[INFO] [stderr]     Checking piston2d-gfx_graphics v0.70.0
[INFO] [stderr]     Checking pistoncore-input v1.0.0
[INFO] [stderr]     Checking x11-clipboard v0.5.2
[INFO] [stderr]     Checking smithay-client-toolkit v0.6.6
[INFO] [stderr]     Checking pistoncore-window v0.47.0
[INFO] [stderr]     Checking pistoncore-window v0.46.0
[INFO] [stderr]     Checking pistoncore-event_loop v0.51.0
[INFO] [stderr]     Checking pistoncore-event_loop v0.52.0
[INFO] [stderr]     Checking piston v0.52.1
[INFO] [stderr]     Checking piston v0.51.0
[INFO] [stderr]     Checking smithay-clipboard v0.4.0
[INFO] [stderr]     Checking copypasta v0.6.3
[INFO] [stderr]     Checking conrod_core v0.73.0
[INFO] [stderr]     Checking smithay-client-toolkit v0.4.6
[INFO] [stderr]     Checking winit v0.19.5
[INFO] [stderr]     Checking glutin v0.21.2
[INFO] [stderr]     Checking conrod_piston v0.73.0
[INFO] [stderr]     Checking pistoncore-glutin_window v0.66.0
[INFO] [stderr]     Checking pistoncore-glutin_window v0.65.0
[INFO] [stderr]     Checking piston_window v0.113.0
[INFO] [stderr]     Checking sars v0.0.1 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `graph::effects::apply_changes`
[INFO] [stdout]  --> src/graph/effects/pusher_1.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use graph::effects::apply_changes;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `INNER`, `NodeChange`, `Node`, `OUTER`, `ThickSurface`
[INFO] [stdout]  --> src/graph/effects/pusher_1.rs:3:27
[INFO] [stdout]   |
[INFO] [stdout] 3 | use graph::types::{Graph, Node, NodeChange, NodeChangeMap, ThickSurface, INNER, OUTER};
[INFO] [stdout]   |                           ^^^^  ^^^^^^^^^^                 ^^^^^^^^^^^^  ^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `closest_node_to_some_point`, `distance_between_nodes`, `distance_between_points`
[INFO] [stdout]  --> src/graph/effects/pusher_1.rs:4:13
[INFO] [stdout]   |
[INFO] [stdout] 4 | use graph::{closest_node_to_some_point, distance_between_nodes, distance_between_points};
[INFO] [stdout]   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `piston::input::keyboard::Key::Out`
[INFO] [stdout]  --> src/graph/effects/pusher_1.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use piston::input::keyboard::Key::Out;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `graph::effects::apply_changes`
[INFO] [stdout]  --> src/graph/effects/pusher_2.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use graph::effects::apply_changes;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `INNER`, `OUTER`, `ThickSurface`
[INFO] [stdout]  --> src/graph/effects/pusher_2.rs:3:60
[INFO] [stdout]   |
[INFO] [stdout] 3 | use graph::types::{Graph, Node, NodeChange, NodeChangeMap, ThickSurface, INNER, OUTER};
[INFO] [stdout]   |                                                            ^^^^^^^^^^^^  ^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `closest_node_to_some_point`, `distance_between_nodes`
[INFO] [stdout]  --> src/graph/effects/pusher_2.rs:4:13
[INFO] [stdout]   |
[INFO] [stdout] 4 | use graph::{closest_node_to_some_point, distance_between_nodes, distance_between_points};
[INFO] [stdout]   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `piston::input::keyboard::Key::Out`
[INFO] [stdout]  --> src/graph/effects/pusher_2.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use piston::input::keyboard::Key::Out;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `stitcher::types::Stitching`
[INFO] [stdout]  --> src/graph/effects/pusher_2.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use stitcher::types::Stitching;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `graph::convex_hull::convex_hull_from_graph`
[INFO] [stdout]   --> src/my_gui/run_mode.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use graph::convex_hull::convex_hull_from_graph;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `conrod_core::widget::text_box::Event`
[INFO] [stdout]  --> src/my_gui/draw_mode.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use conrod_core::widget::text_box::Event;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `conrod_core::widget::Id`
[INFO] [stdout]  --> src/my_gui/draw_mode.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use conrod_core::widget::Id;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `file_io::toml_table_to_params`
[INFO] [stdout]  --> src/my_gui/draw_mode.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use file_io::toml_table_to_params;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `graph::closest_node_to_some_point`
[INFO] [stdout]  --> src/my_gui/draw_mode.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use graph::closest_node_to_some_point;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `dist`
[INFO] [stdout]  --> src/my_gui/draw_mode.rs:8:22
[INFO] [stdout]   |
[INFO] [stdout] 8 | use linalg_helpers::{dist, lines_intersection, points_to_cyclic_lines, closest_point};
[INFO] [stdout]   |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `num_traits::NumCast`
[INFO] [stdout]   --> src/my_gui/draw_mode.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use num_traits::NumCast;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `regex::Regex`
[INFO] [stdout]   --> src/my_gui/draw_mode.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use regex::Regex;
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]   --> src/my_gui/draw_mode.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::str::FromStr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `types::Params`
[INFO] [stdout]   --> src/my_gui/draw_mode.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use types::Params;
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Graph`, `Node`
[INFO] [stdout]  --> src/renderer/draw_mode.rs:2:20
[INFO] [stdout]   |
[INFO] [stdout] 2 | use graph::types::{Graph, Node, NodeChange, NodeChangeMap, Smooth, ThickSurface, INNER, OUTER};
[INFO] [stdout]   |                    ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `simulated_annealing`
[INFO] [stdout]   --> src/renderer/draw_mode.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use simulated_annealing;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MouseCursorEvent`, `RenderEvent`, `UpdateEvent`
[INFO] [stdout]  --> src/renderer/types.rs:2:21
[INFO] [stdout]   |
[INFO] [stdout] 2 | use piston::input::{MouseCursorEvent, RenderArgs, RenderEvent, UpdateArgs, UpdateEvent};
[INFO] [stdout]   |                     ^^^^^^^^^^^^^^^^              ^^^^^^^^^^^              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Stitching`, `Strategy`
[INFO] [stdout]   --> src/renderer/mod.rs:21:23
[INFO] [stdout]    |
[INFO] [stdout] 21 | use stitcher::types::{Stitching, Strategy};
[INFO] [stdout]    |                       ^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `stitch_choice`, `stitch_default`
[INFO] [stdout]   --> src/renderer/mod.rs:22:16
[INFO] [stdout]    |
[INFO] [stdout] 22 | use stitcher::{stitch_choice, stitch_default};
[INFO] [stdout]    |                ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Align`, `Direction`, `Padding`, `Position`, `Relative`
[INFO] [stdout]   --> src/shared_shit.rs:16:29
[INFO] [stdout]    |
[INFO] [stdout] 16 | use conrod_core::position::{Align, Direction, Padding, Position, Relative};
[INFO] [stdout]    |                             ^^^^^  ^^^^^^^^^  ^^^^^^^  ^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the item `Align` is imported redundantly
[INFO] [stdout]   --> src/shared_shit.rs:47:33
[INFO] [stdout]    |
[INFO] [stdout] 16 | use conrod_core::position::{Align, Direction, Padding, Position, Relative};
[INFO] [stdout]    |                             ----- the item `Align` is already imported here
[INFO] [stdout] ...
[INFO] [stdout] 47 |     use conrod_core::position::{Align, Direction, Padding, Position, Relative};
[INFO] [stdout]    |                                 ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the item `Direction` is imported redundantly
[INFO] [stdout]   --> src/shared_shit.rs:47:40
[INFO] [stdout]    |
[INFO] [stdout] 16 | use conrod_core::position::{Align, Direction, Padding, Position, Relative};
[INFO] [stdout]    |                                    --------- the item `Direction` is already imported here
[INFO] [stdout] ...
[INFO] [stdout] 47 |     use conrod_core::position::{Align, Direction, Padding, Position, Relative};
[INFO] [stdout]    |                                        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the item `Padding` is imported redundantly
[INFO] [stdout]   --> src/shared_shit.rs:47:51
[INFO] [stdout]    |
[INFO] [stdout] 16 | use conrod_core::position::{Align, Direction, Padding, Position, Relative};
[INFO] [stdout]    |                                               ------- the item `Padding` is already imported here
[INFO] [stdout] ...
[INFO] [stdout] 47 |     use conrod_core::position::{Align, Direction, Padding, Position, Relative};
[INFO] [stdout]    |                                                   ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the item `Position` is imported redundantly
[INFO] [stdout]   --> src/shared_shit.rs:47:60
[INFO] [stdout]    |
[INFO] [stdout] 16 | use conrod_core::position::{Align, Direction, Padding, Position, Relative};
[INFO] [stdout]    |                                                        -------- the item `Position` is already imported here
[INFO] [stdout] ...
[INFO] [stdout] 47 |     use conrod_core::position::{Align, Direction, Padding, Position, Relative};
[INFO] [stdout]    |                                                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the item `Relative` is imported redundantly
[INFO] [stdout]   --> src/shared_shit.rs:47:70
[INFO] [stdout]    |
[INFO] [stdout] 16 | use conrod_core::position::{Align, Direction, Padding, Position, Relative};
[INFO] [stdout]    |                                                                  -------- the item `Relative` is already imported here
[INFO] [stdout] ...
[INFO] [stdout] 47 |     use conrod_core::position::{Align, Direction, Padding, Position, Relative};
[INFO] [stdout]    |                                                                      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the item `widget` is imported redundantly
[INFO] [stdout]    --> src/shared_shit.rs:110:23
[INFO] [stdout]     |
[INFO] [stdout] 13  | use conrod_core::*;
[INFO] [stdout]     |     -------------- the item `widget` is already imported here
[INFO] [stdout] ...
[INFO] [stdout] 110 |     use conrod_core::{widget, Colorable, Labelable, Positionable, Sizeable, Widget};
[INFO] [stdout]     |                       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the item `Colorable` is imported redundantly
[INFO] [stdout]    --> src/shared_shit.rs:110:31
[INFO] [stdout]     |
[INFO] [stdout] 13  | use conrod_core::*;
[INFO] [stdout]     |     -------------- the item `Colorable` is already imported here
[INFO] [stdout] ...
[INFO] [stdout] 110 |     use conrod_core::{widget, Colorable, Labelable, Positionable, Sizeable, Widget};
[INFO] [stdout]     |                               ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the item `Labelable` is imported redundantly
[INFO] [stdout]    --> src/shared_shit.rs:110:42
[INFO] [stdout]     |
[INFO] [stdout] 13  | use conrod_core::*;
[INFO] [stdout]     |     -------------- the item `Labelable` is already imported here
[INFO] [stdout] ...
[INFO] [stdout] 110 |     use conrod_core::{widget, Colorable, Labelable, Positionable, Sizeable, Widget};
[INFO] [stdout]     |                                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the item `Positionable` is imported redundantly
[INFO] [stdout]    --> src/shared_shit.rs:110:53
[INFO] [stdout]     |
[INFO] [stdout] 13  | use conrod_core::*;
[INFO] [stdout]     |     -------------- the item `Positionable` is already imported here
[INFO] [stdout] ...
[INFO] [stdout] 110 |     use conrod_core::{widget, Colorable, Labelable, Positionable, Sizeable, Widget};
[INFO] [stdout]     |                                                     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the item `Sizeable` is imported redundantly
[INFO] [stdout]    --> src/shared_shit.rs:110:67
[INFO] [stdout]     |
[INFO] [stdout] 13  | use conrod_core::*;
[INFO] [stdout]     |     -------------- the item `Sizeable` is already imported here
[INFO] [stdout] ...
[INFO] [stdout] 110 |     use conrod_core::{widget, Colorable, Labelable, Positionable, Sizeable, Widget};
[INFO] [stdout]     |                                                                   ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the item `Widget` is imported redundantly
[INFO] [stdout]    --> src/shared_shit.rs:110:77
[INFO] [stdout]     |
[INFO] [stdout] 13  | use conrod_core::*;
[INFO] [stdout]     |     -------------- the item `Widget` is already imported here
[INFO] [stdout] ...
[INFO] [stdout] 110 |     use conrod_core::{widget, Colorable, Labelable, Positionable, Sizeable, Widget};
[INFO] [stdout]     |                                                                             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `distance_between_points`
[INFO] [stdout]  --> src/stitcher/greedy.rs:1:37
[INFO] [stdout]   |
[INFO] [stdout] 1 | use graph::{distance_between_nodes, distance_between_points};
[INFO] [stdout]   |                                     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Node`
[INFO] [stdout]  --> src/stitcher/greedy.rs:3:27
[INFO] [stdout]   |
[INFO] [stdout] 3 | use graph::types::{Graph, Node};
[INFO] [stdout]   |                           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/stitcher/greedy.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `vec1::Vec1`
[INFO] [stdout]  --> src/stitcher/greedy.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use vec1::Vec1;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `distance_between_nodes`
[INFO] [stdout]  --> src/stitcher/types.rs:1:13
[INFO] [stdout]   |
[INFO] [stdout] 1 | use graph::{distance_between_nodes, distance_between_points};
[INFO] [stdout]   |             ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ThickSurface`
[INFO] [stdout]  --> src/stitcher/types.rs:3:26
[INFO] [stdout]   |
[INFO] [stdout] 3 | use graph::types::{Node, ThickSurface, INNER, OUTER};
[INFO] [stdout]   |                          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `distance_between_nodes`, `distance_between_points`
[INFO] [stdout]  --> src/stitcher/mod.rs:5:13
[INFO] [stdout]   |
[INFO] [stdout] 5 | use graph::{distance_between_nodes, distance_between_points};
[INFO] [stdout]   |             ^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Node`
[INFO] [stdout]  --> src/stitcher/mod.rs:7:20
[INFO] [stdout]   |
[INFO] [stdout] 7 | use graph::types::{Node, ThickSurface, INNER, OUTER};
[INFO] [stdout]   |                    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/stitcher/mod.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `vec1::Vec1`
[INFO] [stdout]  --> src/stitcher/mod.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use vec1::Vec1;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `toml::from_str`
[INFO] [stdout]   --> src/main.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 38 | use toml::from_str;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `lines_intersection` in this scope
[INFO] [stdout]    --> src/graph/effects/mod.rs:703:21
[INFO] [stdout]     |
[INFO] [stdout] 703 |         let hmmmm = lines_intersection(&lines1);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this function
[INFO] [stdout]     |
[INFO] [stdout] 185 +     use linalg_helpers::lines_intersection;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `lines_intersection` in this scope
[INFO] [stdout]    --> src/graph/effects/mod.rs:704:22
[INFO] [stdout]     |
[INFO] [stdout] 704 |         let hmmmm2 = lines_intersection(&lines2);
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this function
[INFO] [stdout]     |
[INFO] [stdout] 185 +     use linalg_helpers::lines_intersection;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `graph::effects::apply_changes`
[INFO] [stdout]  --> src/graph/effects/pusher_1.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use graph::effects::apply_changes;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `INNER`, `NodeChange`, `Node`, `OUTER`, `ThickSurface`
[INFO] [stdout]  --> src/graph/effects/pusher_1.rs:3:27
[INFO] [stdout]   |
[INFO] [stdout] 3 | use graph::types::{Graph, Node, NodeChange, NodeChangeMap, ThickSurface, INNER, OUTER};
[INFO] [stdout]   |                           ^^^^  ^^^^^^^^^^                 ^^^^^^^^^^^^  ^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `closest_node_to_some_point`, `distance_between_nodes`, `distance_between_points`
[INFO] [stdout]  --> src/graph/effects/pusher_1.rs:4:13
[INFO] [stdout]   |
[INFO] [stdout] 4 | use graph::{closest_node_to_some_point, distance_between_nodes, distance_between_points};
[INFO] [stdout]   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `piston::input::keyboard::Key::Out`
[INFO] [stdout]  --> src/graph/effects/pusher_1.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use piston::input::keyboard::Key::Out;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `graph::effects::apply_changes`
[INFO] [stdout]  --> src/graph/effects/pusher_2.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use graph::effects::apply_changes;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `INNER`, `OUTER`, `ThickSurface`
[INFO] [stdout]  --> src/graph/effects/pusher_2.rs:3:60
[INFO] [stdout]   |
[INFO] [stdout] 3 | use graph::types::{Graph, Node, NodeChange, NodeChangeMap, ThickSurface, INNER, OUTER};
[INFO] [stdout]   |                                                            ^^^^^^^^^^^^  ^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `closest_node_to_some_point`, `distance_between_nodes`
[INFO] [stdout]  --> src/graph/effects/pusher_2.rs:4:13
[INFO] [stdout]   |
[INFO] [stdout] 4 | use graph::{closest_node_to_some_point, distance_between_nodes, distance_between_points};
[INFO] [stdout]   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `piston::input::keyboard::Key::Out`
[INFO] [stdout]  --> src/graph/effects/pusher_2.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use piston::input::keyboard::Key::Out;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `stitcher::types::Stitching`
[INFO] [stdout]  --> src/graph/effects/pusher_2.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use stitcher::types::Stitching;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `graph::convex_hull::convex_hull_from_graph`
[INFO] [stdout]   --> src/my_gui/run_mode.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use graph::convex_hull::convex_hull_from_graph;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `conrod_core::widget::text_box::Event`
[INFO] [stdout]  --> src/my_gui/draw_mode.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use conrod_core::widget::text_box::Event;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `conrod_core::widget::Id`
[INFO] [stdout]  --> src/my_gui/draw_mode.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use conrod_core::widget::Id;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `file_io::toml_table_to_params`
[INFO] [stdout]  --> src/my_gui/draw_mode.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use file_io::toml_table_to_params;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `graph::closest_node_to_some_point`
[INFO] [stdout]  --> src/my_gui/draw_mode.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use graph::closest_node_to_some_point;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `dist`
[INFO] [stdout]  --> src/my_gui/draw_mode.rs:8:22
[INFO] [stdout]   |
[INFO] [stdout] 8 | use linalg_helpers::{dist, lines_intersection, points_to_cyclic_lines, closest_point};
[INFO] [stdout]   |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `num_traits::NumCast`
[INFO] [stdout]   --> src/my_gui/draw_mode.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use num_traits::NumCast;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `regex::Regex`
[INFO] [stdout]   --> src/my_gui/draw_mode.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use regex::Regex;
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]   --> src/my_gui/draw_mode.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::str::FromStr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `types::Params`
[INFO] [stdout]   --> src/my_gui/draw_mode.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use types::Params;
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Graph`, `Node`
[INFO] [stdout]  --> src/renderer/draw_mode.rs:2:20
[INFO] [stdout]   |
[INFO] [stdout] 2 | use graph::types::{Graph, Node, NodeChange, NodeChangeMap, Smooth, ThickSurface, INNER, OUTER};
[INFO] [stdout]   |                    ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `simulated_annealing`
[INFO] [stdout]   --> src/renderer/draw_mode.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use simulated_annealing;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MouseCursorEvent`, `RenderEvent`, `UpdateEvent`
[INFO] [stdout]  --> src/renderer/types.rs:2:21
[INFO] [stdout]   |
[INFO] [stdout] 2 | use piston::input::{MouseCursorEvent, RenderArgs, RenderEvent, UpdateArgs, UpdateEvent};
[INFO] [stdout]   |                     ^^^^^^^^^^^^^^^^              ^^^^^^^^^^^              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Stitching`, `Strategy`
[INFO] [stdout]   --> src/renderer/mod.rs:21:23
[INFO] [stdout]    |
[INFO] [stdout] 21 | use stitcher::types::{Stitching, Strategy};
[INFO] [stdout]    |                       ^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `stitch_choice`, `stitch_default`
[INFO] [stdout]   --> src/renderer/mod.rs:22:16
[INFO] [stdout]    |
[INFO] [stdout] 22 | use stitcher::{stitch_choice, stitch_default};
[INFO] [stdout]    |                ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Align`, `Direction`, `Padding`, `Position`, `Relative`
[INFO] [stdout]   --> src/shared_shit.rs:16:29
[INFO] [stdout]    |
[INFO] [stdout] 16 | use conrod_core::position::{Align, Direction, Padding, Position, Relative};
[INFO] [stdout]    |                             ^^^^^  ^^^^^^^^^  ^^^^^^^  ^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the item `Align` is imported redundantly
[INFO] [stdout]   --> src/shared_shit.rs:47:33
[INFO] [stdout]    |
[INFO] [stdout] 16 | use conrod_core::position::{Align, Direction, Padding, Position, Relative};
[INFO] [stdout]    |                             ----- the item `Align` is already imported here
[INFO] [stdout] ...
[INFO] [stdout] 47 |     use conrod_core::position::{Align, Direction, Padding, Position, Relative};
[INFO] [stdout]    |                                 ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the item `Direction` is imported redundantly
[INFO] [stdout]   --> src/shared_shit.rs:47:40
[INFO] [stdout]    |
[INFO] [stdout] 16 | use conrod_core::position::{Align, Direction, Padding, Position, Relative};
[INFO] [stdout]    |                                    --------- the item `Direction` is already imported here
[INFO] [stdout] ...
[INFO] [stdout] 47 |     use conrod_core::position::{Align, Direction, Padding, Position, Relative};
[INFO] [stdout]    |                                        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the item `Padding` is imported redundantly
[INFO] [stdout]   --> src/shared_shit.rs:47:51
[INFO] [stdout]    |
[INFO] [stdout] 16 | use conrod_core::position::{Align, Direction, Padding, Position, Relative};
[INFO] [stdout]    |                                               ------- the item `Padding` is already imported here
[INFO] [stdout] ...
[INFO] [stdout] 47 |     use conrod_core::position::{Align, Direction, Padding, Position, Relative};
[INFO] [stdout]    |                                                   ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the item `Position` is imported redundantly
[INFO] [stdout]   --> src/shared_shit.rs:47:60
[INFO] [stdout]    |
[INFO] [stdout] 16 | use conrod_core::position::{Align, Direction, Padding, Position, Relative};
[INFO] [stdout]    |                                                        -------- the item `Position` is already imported here
[INFO] [stdout] ...
[INFO] [stdout] 47 |     use conrod_core::position::{Align, Direction, Padding, Position, Relative};
[INFO] [stdout]    |                                                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the item `Relative` is imported redundantly
[INFO] [stdout]   --> src/shared_shit.rs:47:70
[INFO] [stdout]    |
[INFO] [stdout] 16 | use conrod_core::position::{Align, Direction, Padding, Position, Relative};
[INFO] [stdout]    |                                                                  -------- the item `Relative` is already imported here
[INFO] [stdout] ...
[INFO] [stdout] 47 |     use conrod_core::position::{Align, Direction, Padding, Position, Relative};
[INFO] [stdout]    |                                                                      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the item `widget` is imported redundantly
[INFO] [stdout]    --> src/shared_shit.rs:110:23
[INFO] [stdout]     |
[INFO] [stdout] 13  | use conrod_core::*;
[INFO] [stdout]     |     -------------- the item `widget` is already imported here
[INFO] [stdout] ...
[INFO] [stdout] 110 |     use conrod_core::{widget, Colorable, Labelable, Positionable, Sizeable, Widget};
[INFO] [stdout]     |                       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the item `Colorable` is imported redundantly
[INFO] [stdout]    --> src/shared_shit.rs:110:31
[INFO] [stdout]     |
[INFO] [stdout] 13  | use conrod_core::*;
[INFO] [stdout]     |     -------------- the item `Colorable` is already imported here
[INFO] [stdout] ...
[INFO] [stdout] 110 |     use conrod_core::{widget, Colorable, Labelable, Positionable, Sizeable, Widget};
[INFO] [stdout]     |                               ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the item `Labelable` is imported redundantly
[INFO] [stdout]    --> src/shared_shit.rs:110:42
[INFO] [stdout]     |
[INFO] [stdout] 13  | use conrod_core::*;
[INFO] [stdout]     |     -------------- the item `Labelable` is already imported here
[INFO] [stdout] ...
[INFO] [stdout] 110 |     use conrod_core::{widget, Colorable, Labelable, Positionable, Sizeable, Widget};
[INFO] [stdout]     |                                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the item `Positionable` is imported redundantly
[INFO] [stdout]    --> src/shared_shit.rs:110:53
[INFO] [stdout]     |
[INFO] [stdout] 13  | use conrod_core::*;
[INFO] [stdout]     |     -------------- the item `Positionable` is already imported here
[INFO] [stdout] ...
[INFO] [stdout] 110 |     use conrod_core::{widget, Colorable, Labelable, Positionable, Sizeable, Widget};
[INFO] [stdout]     |                                                     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the item `Sizeable` is imported redundantly
[INFO] [stdout]    --> src/shared_shit.rs:110:67
[INFO] [stdout]     |
[INFO] [stdout] 13  | use conrod_core::*;
[INFO] [stdout]     |     -------------- the item `Sizeable` is already imported here
[INFO] [stdout] ...
[INFO] [stdout] 110 |     use conrod_core::{widget, Colorable, Labelable, Positionable, Sizeable, Widget};
[INFO] [stdout]     |                                                                   ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the item `Widget` is imported redundantly
[INFO] [stdout]    --> src/shared_shit.rs:110:77
[INFO] [stdout]     |
[INFO] [stdout] 13  | use conrod_core::*;
[INFO] [stdout]     |     -------------- the item `Widget` is already imported here
[INFO] [stdout] ...
[INFO] [stdout] 110 |     use conrod_core::{widget, Colorable, Labelable, Positionable, Sizeable, Widget};
[INFO] [stdout]     |                                                                             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `distance_between_points`
[INFO] [stdout]  --> src/stitcher/greedy.rs:1:37
[INFO] [stdout]   |
[INFO] [stdout] 1 | use graph::{distance_between_nodes, distance_between_points};
[INFO] [stdout]   |                                     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Node`
[INFO] [stdout]  --> src/stitcher/greedy.rs:3:27
[INFO] [stdout]   |
[INFO] [stdout] 3 | use graph::types::{Graph, Node};
[INFO] [stdout]   |                           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/stitcher/greedy.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `vec1::Vec1`
[INFO] [stdout]  --> src/stitcher/greedy.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use vec1::Vec1;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `distance_between_nodes`
[INFO] [stdout]  --> src/stitcher/types.rs:1:13
[INFO] [stdout]   |
[INFO] [stdout] 1 | use graph::{distance_between_nodes, distance_between_points};
[INFO] [stdout]   |             ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ThickSurface`
[INFO] [stdout]  --> src/stitcher/types.rs:3:26
[INFO] [stdout]   |
[INFO] [stdout] 3 | use graph::types::{Node, ThickSurface, INNER, OUTER};
[INFO] [stdout]   |                          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `distance_between_nodes`, `distance_between_points`
[INFO] [stdout]  --> src/stitcher/mod.rs:5:13
[INFO] [stdout]   |
[INFO] [stdout] 5 | use graph::{distance_between_nodes, distance_between_points};
[INFO] [stdout]   |             ^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Node`
[INFO] [stdout]  --> src/stitcher/mod.rs:7:20
[INFO] [stdout]   |
[INFO] [stdout] 7 | use graph::types::{Node, ThickSurface, INNER, OUTER};
[INFO] [stdout]   |                    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/stitcher/mod.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `vec1::Vec1`
[INFO] [stdout]  --> src/stitcher/mod.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use vec1::Vec1;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `toml::from_str`
[INFO] [stdout]   --> src/main.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 38 | use toml::from_str;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/file_io/recorders.rs:23:16
[INFO] [stdout]    |
[INFO] [stdout] 23 |             Ok(mut f) => Some(RecordingState { f, last_recorded: vec![] }),
[INFO] [stdout]    |                ----^
[INFO] [stdout]    |                |
[INFO] [stdout]    |                help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]   --> src/graph/effects/pusher_1.rs:18:81
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn push_inners(inner: &Graph, outer: &Graph, outer_changes: &NodeChangeMap, s: &Stitching) -> NodeChangeMap {
[INFO] [stdout]    |                                                                                 ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cur_dist`
[INFO] [stdout]   --> src/graph/effects/pusher_2.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 26 |     let cur_dist = distance_between_points(avg_ball_of_change.cur_x, avg_ball_of_change.cur_y, inn.x, inn.y);
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cur_dist`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `compression_factor`
[INFO] [stdout]    --> src/graph/effects/mod.rs:177:5
[INFO] [stdout]     |
[INFO] [stdout] 177 |     compression_factor: f64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_compression_factor`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ts`
[INFO] [stdout]    --> src/graph/mod.rs:191:41
[INFO] [stdout]     |
[INFO] [stdout] 191 | fn can_merge_without_intersection_check(ts: &ThickSurface, node_merging: &NodeMerging, deletion_threshold: f64) -> bool {
[INFO] [stdout]     |                                         ^^ help: if this is intentional, prefix it with an underscore: `_ts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/linalg_helpers.rs:82:17
[INFO] [stdout]    |
[INFO] [stdout] 82 |             let mut prev = layer[0];
[INFO] [stdout]    |                 ----^^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fn_`
[INFO] [stdout]   --> src/my_gui/run_mode.rs:73:18
[INFO] [stdout]    |
[INFO] [stdout] 73 |         for (rn, fn_) in rec_map() {
[INFO] [stdout]    |                  ^^^ help: if this is intentional, prefix it with an underscore: `_fn_`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fn_`
[INFO] [stdout]   --> src/my_gui/run_mode.rs:91:18
[INFO] [stdout]    |
[INFO] [stdout] 91 |         for (rn, fn_) in rec_map() {
[INFO] [stdout]    |                  ^^^ help: if this is intentional, prefix it with an underscore: `_fn_`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `idontknow`
[INFO] [stdout]    --> src/my_gui/run_mode.rs:534:9
[INFO] [stdout]     |
[INFO] [stdout] 534 |     let idontknow = make_recorder_widgets(ids.title_recorders, ids, app, ui);
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_idontknow`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `shau`
[INFO] [stdout]    --> src/my_gui/run_mode.rs:539:9
[INFO] [stdout]     |
[INFO] [stdout] 539 |     let shau = make_color_sliders(ids.title_color_sliders, ids, app, ui);
[INFO] [stdout]     |         ^^^^ help: if this is intentional, prefix it with an underscore: `_shau`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/renderer/draw_mode.rs:190:9
[INFO] [stdout]     |
[INFO] [stdout] 190 |         _ => Vec::new(),
[INFO] [stdout]     |         ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]    --> src/renderer/draw_mode.rs:139:36
[INFO] [stdout]     |
[INFO] [stdout] 139 |         State::SurfaceStitched(ts, s) => lines_from_thick_surface(ts),
[INFO] [stdout]     |                                    ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]    --> src/renderer/draw_mode.rs:141:38
[INFO] [stdout]     |
[INFO] [stdout] 141 |         State::SurfaceStitchingA(ts, s) => {
[INFO] [stdout]     |                                      ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]    --> src/renderer/draw_mode.rs:155:38
[INFO] [stdout]     |
[INFO] [stdout] 155 |         State::SurfaceStitchingB(ts, s, (last_node_id, last_layer_id)) => {
[INFO] [stdout]     |                                      ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/renderer/draw_mode.rs:331:9
[INFO] [stdout]     |
[INFO] [stdout] 331 |         _ => s.clone(),
[INFO] [stdout]     |         ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_ts`
[INFO] [stdout]    --> src/renderer/draw_mode.rs:324:21
[INFO] [stdout]     |
[INFO] [stdout] 324 |             let mut new_ts = new_sb.ts;
[INFO] [stdout]     |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_ts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_rng`
[INFO] [stdout]    --> src/renderer/draw_mode.rs:325:21
[INFO] [stdout]     |
[INFO] [stdout] 325 |             let mut new_rng = new_sb.rng;
[INFO] [stdout]     |                     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_rng`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/renderer/draw_mode.rs:323:17
[INFO] [stdout]     |
[INFO] [stdout] 323 |             let mut new_sb = sb.clone();
[INFO] [stdout]     |                 ----^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/renderer/draw_mode.rs:324:17
[INFO] [stdout]     |
[INFO] [stdout] 324 |             let mut new_ts = new_sb.ts;
[INFO] [stdout]     |                 ----^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/renderer/draw_mode.rs:325:17
[INFO] [stdout]     |
[INFO] [stdout] 325 |             let mut new_rng = new_sb.rng;
[INFO] [stdout]     |                 ----^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]   --> src/main.rs:89:9
[INFO] [stdout]    |
[INFO] [stdout] 89 |     let s: Vec<i64> = empty_vec.iter().map(|x| *x).collect();
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `closest_nodes_to_some_point` is never used
[INFO] [stdout]    --> src/graph/mod.rs:101:8
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub fn closest_nodes_to_some_point(graph: &Graph, some_point_x: f64, some_point_y: f64) -> (&Node, &Node) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `closest_node_across_all_layers` is never used
[INFO] [stdout]    --> src/graph/mod.rs:112:8
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub fn closest_node_across_all_layers(ts: &ThickSurface, some_point_x: f64, some_point_y: f64) -> (&Node, usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `closest_nodes_across_all_layers` is never used
[INFO] [stdout]    --> src/graph/mod.rs:125:8
[INFO] [stdout]     |
[INFO] [stdout] 125 | pub fn closest_nodes_across_all_layers(ts: &ThickSurface, some_point_x: f64, some_point_y: f64) -> (&Node, &Node, usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `outer_changes_to_blob` is never used
[INFO] [stdout]  --> src/graph/effects/pusher_2.rs:8:4
[INFO] [stdout]   |
[INFO] [stdout] 8 | fn outer_changes_to_blob(n: usize, inn: &Node, outer_changes: &NodeChangeMap, g: &Graph) {
[INFO] [stdout]   |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Continuous` is never constructed
[INFO] [stdout]  --> src/graph/types.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub enum Smooth<L, R> {
[INFO] [stdout]   |          ------ variant in this enum
[INFO] [stdout] 8 |     Count(L),
[INFO] [stdout] 9 |     Continuous(R),
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `Smooth` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `best_effort_add` and `best_effort_delete` are never used
[INFO] [stdout]    --> src/graph/types.rs:194:19
[INFO] [stdout]     |
[INFO] [stdout] 175 | impl ThickSurface {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 194 |     pub(crate) fn best_effort_add(&mut self, x: f64, y: f64) -> Result<(), ()> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub(crate) fn best_effort_delete(&mut self, x: f64, y: f64) -> Result<(), ()> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normed_vector` is never used
[INFO] [stdout]   --> src/linalg_helpers.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn normed_vector(x: f64, y: f64) -> (f64, f64) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bisecting_vector` is never used
[INFO] [stdout]   --> src/linalg_helpers.rs:27:8
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub fn bisecting_vector(middle_x: f64, middle_y: f64, clkwise_x: f64, clkwise_y: f64, ctrclkwise_x: f64, ctrclkwise_y: f64) -> (f64, f64) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from` is never used
[INFO] [stdout]   --> src/my_gui/run_mode.rs:89:12
[INFO] [stdout]    |
[INFO] [stdout] 66 | impl RunModeAppState {
[INFO] [stdout]    | -------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 89 |     pub fn from(ss: SimState, params: Params) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_inherit` is never used
[INFO] [stdout]   --> src/my_gui/draw_mode.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl DrawMode {
[INFO] [stdout]    | ------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn from_inherit(ss: SimState) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BLACK` is never used
[INFO] [stdout]  --> src/renderer/consts.rs:3:11
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub const BLACK: Color = [0.0, 0.0, 0.0, 0.0];
[INFO] [stdout]   |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GREEN` is never used
[INFO] [stdout]  --> src/renderer/consts.rs:9:11
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub const GREEN: Color = [0.2, 1.0, 0.2, 1.0];
[INFO] [stdout]   |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `s`, `stitch_strat`, `initial_gm`, `temp`, and `params` are never read
[INFO] [stdout]   --> src/renderer/draw_mode.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 32 | struct StateBag {
[INFO] [stdout]    |        -------- fields in this struct
[INFO] [stdout] 33 |     pub ts: ThickSurface,
[INFO] [stdout] 34 |     pub s: Stitching,
[INFO] [stdout]    |         ^
[INFO] [stdout] 35 |     pub stitch_strat: Strategy,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 36 |     pub initial_gm: f64,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 37 |     pub temp: f64,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 38 |     pub rng: rand::rngs::ThreadRng,
[INFO] [stdout] 39 |     pub params: Params,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `StateBag` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/renderer/draw_mode.rs:43:8
[INFO] [stdout]    |
[INFO] [stdout] 42 | impl StateBag {
[INFO] [stdout]    | ------------- associated function in this implementation
[INFO] [stdout] 43 |     fn new(ts: ThickSurface, stitch_strat: Strategy, params: Params) -> StateBag {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get`, `get_closest_correspondent`, and `len` are never used
[INFO] [stdout]    --> src/stitcher/types.rs:89:12
[INFO] [stdout]     |
[INFO] [stdout] 76  | impl Stitching {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 89  |     pub fn get(&self, layer_id: usize, n: &Node) -> Vec1<usize> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 98  |     pub fn get_closest_correspondent(&self, layer_id: usize, n: &Node) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn len(&self) -> usize {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]   --> src/main.rs:59:26
[INFO] [stdout]    |
[INFO] [stdout] 59 |         Err(_) => panic!(format!("Parameter file named \"{}\" not found.", params_file_path)),
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]    = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout]    = note: `#[warn(non_fmt_panics)]` on by default
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]    |
[INFO] [stdout] 59 -         Err(_) => panic!(format!("Parameter file named \"{}\" not found.", params_file_path)),
[INFO] [stdout] 59 +         Err(_) => panic!("Parameter file named \"{}\" not found.", params_file_path),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/file_io/recorders.rs:148:28
[INFO] [stdout]     |
[INFO] [stdout] 148 |             None => panic!(format!("unsupported recorder: {}", r)),
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 148 -             None => panic!(format!("unsupported recorder: {}", r)),
[INFO] [stdout] 148 +             None => panic!("unsupported recorder: {}", r),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over an `Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> src/my_gui/run_mode.rs:335:14
[INFO] [stdout]     |
[INFO] [stdout] 335 |       for i in widget::Slider::new(app.inner_color.0, 0.0, 1.0)
[INFO] [stdout]     |  ______________^
[INFO] [stdout] 336 | |         .label("red")
[INFO] [stdout] 337 | |         .label_color(conrod_core::color::WHITE)
[INFO] [stdout] 338 | |         .color(Color::Rgba(app.inner_color.0, 0.0, 0.0, 1.0))
[INFO] [stdout] 339 | |         .down_from(anchor_id, 20.0)
[INFO] [stdout] 340 | |         .set(ids.red_inner, ui)
[INFO] [stdout]     | |_______________________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(for_loops_over_fallibles)]` on by default
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 335 |     while let Some(i) = widget::Slider::new(app.inner_color.0, 0.0, 1.0)
[INFO] [stdout]     |     ~~~~~~~~~~~~~~~ ~~~
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 335 |     if let Some(i) = widget::Slider::new(app.inner_color.0, 0.0, 1.0)
[INFO] [stdout]     |     ~~~~~~~~~~~~ ~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over an `Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> src/my_gui/run_mode.rs:345:14
[INFO] [stdout]     |
[INFO] [stdout] 345 |       for i in widget::Slider::new(app.inner_color.1, 0.0, 1.0)
[INFO] [stdout]     |  ______________^
[INFO] [stdout] 346 | |         .label("green")
[INFO] [stdout] 347 | |         .label_color(conrod_core::color::WHITE)
[INFO] [stdout] 348 | |         .color(Color::Rgba(0.0, app.inner_color.1, 0.0, 1.0))
[INFO] [stdout] 349 | |         .down_from(ids.red_inner, 20.0)
[INFO] [stdout] 350 | |         .set(ids.green_inner, ui)
[INFO] [stdout]     | |_________________________________^
[INFO] [stdout]     |
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 345 |     while let Some(i) = widget::Slider::new(app.inner_color.1, 0.0, 1.0)
[INFO] [stdout]     |     ~~~~~~~~~~~~~~~ ~~~
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 345 |     if let Some(i) = widget::Slider::new(app.inner_color.1, 0.0, 1.0)
[INFO] [stdout]     |     ~~~~~~~~~~~~ ~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over an `Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> src/my_gui/run_mode.rs:355:14
[INFO] [stdout]     |
[INFO] [stdout] 355 |       for i in widget::Slider::new(app.inner_color.2, 0.0, 1.0)
[INFO] [stdout]     |  ______________^
[INFO] [stdout] 356 | |         .label("blue")
[INFO] [stdout] 357 | |         .label_color(conrod_core::color::WHITE)
[INFO] [stdout] 358 | |         .color(Color::Rgba(0.0, 0.0, app.inner_color.2, 1.0))
[INFO] [stdout] 359 | |         .down_from(ids.green_inner, 20.0)
[INFO] [stdout] 360 | |         .set(ids.blue_inner, ui)
[INFO] [stdout]     | |________________________________^
[INFO] [stdout]     |
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 355 |     while let Some(i) = widget::Slider::new(app.inner_color.2, 0.0, 1.0)
[INFO] [stdout]     |     ~~~~~~~~~~~~~~~ ~~~
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 355 |     if let Some(i) = widget::Slider::new(app.inner_color.2, 0.0, 1.0)
[INFO] [stdout]     |     ~~~~~~~~~~~~ ~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over an `Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> src/my_gui/run_mode.rs:367:14
[INFO] [stdout]     |
[INFO] [stdout] 367 |       for i in widget::Slider::new(app.outer_color.0, 0.0, 1.0)
[INFO] [stdout]     |  ______________^
[INFO] [stdout] 368 | |         .label("red")
[INFO] [stdout] 369 | |         .label_color(conrod_core::color::WHITE)
[INFO] [stdout] 370 | |         .color(Color::Rgba(app.outer_color.0, 0.0, 0.0, 1.0))
[INFO] [stdout] 371 | |         .down_from(ids.blue_inner, 20.0)
[INFO] [stdout] 372 | |         .set(ids.red_outer, ui)
[INFO] [stdout]     | |_______________________________^
[INFO] [stdout]     |
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 367 |     while let Some(i) = widget::Slider::new(app.outer_color.0, 0.0, 1.0)
[INFO] [stdout]     |     ~~~~~~~~~~~~~~~ ~~~
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 367 |     if let Some(i) = widget::Slider::new(app.outer_color.0, 0.0, 1.0)
[INFO] [stdout]     |     ~~~~~~~~~~~~ ~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over an `Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> src/my_gui/run_mode.rs:377:14
[INFO] [stdout]     |
[INFO] [stdout] 377 |       for i in widget::Slider::new(app.outer_color.1, 0.0, 1.0)
[INFO] [stdout]     |  ______________^
[INFO] [stdout] 378 | |         .label("green")
[INFO] [stdout] 379 | |         .label_color(conrod_core::color::WHITE)
[INFO] [stdout] 380 | |         .color(Color::Rgba(0.0, app.outer_color.1, 0.0, 1.0))
[INFO] [stdout] 381 | |         .down_from(ids.red_outer, 20.0)
[INFO] [stdout] 382 | |         .set(ids.green_outer, ui)
[INFO] [stdout]     | |_________________________________^
[INFO] [stdout]     |
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 377 |     while let Some(i) = widget::Slider::new(app.outer_color.1, 0.0, 1.0)
[INFO] [stdout]     |     ~~~~~~~~~~~~~~~ ~~~
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 377 |     if let Some(i) = widget::Slider::new(app.outer_color.1, 0.0, 1.0)
[INFO] [stdout]     |     ~~~~~~~~~~~~ ~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over an `Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> src/my_gui/run_mode.rs:387:14
[INFO] [stdout]     |
[INFO] [stdout] 387 |       for i in widget::Slider::new(app.outer_color.2, 0.0, 1.0)
[INFO] [stdout]     |  ______________^
[INFO] [stdout] 388 | |         .label("blue")
[INFO] [stdout] 389 | |         .label_color(conrod_core::color::WHITE)
[INFO] [stdout] 390 | |         .color(Color::Rgba(0.0, 0.0, app.outer_color.2, 1.0))
[INFO] [stdout] 391 | |         .down_from(ids.green_outer, 20.0)
[INFO] [stdout] 392 | |         .set(ids.blue_outer, ui)
[INFO] [stdout]     | |________________________________^
[INFO] [stdout]     |
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 387 |     while let Some(i) = widget::Slider::new(app.outer_color.2, 0.0, 1.0)
[INFO] [stdout]     |     ~~~~~~~~~~~~~~~ ~~~
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 387 |     if let Some(i) = widget::Slider::new(app.outer_color.2, 0.0, 1.0)
[INFO] [stdout]     |     ~~~~~~~~~~~~ ~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over an `Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> src/my_gui/run_mode.rs:400:14
[INFO] [stdout]     |
[INFO] [stdout] 400 |       for i in widget::Slider::new(app.convex_hull_color.0, 0.0, 1.0)
[INFO] [stdout]     |  ______________^
[INFO] [stdout] 401 | |         .label("red")
[INFO] [stdout] 402 | |         .label_color(conrod_core::color::WHITE)
[INFO] [stdout] 403 | |         .color(Color::Rgba(app.convex_hull_color.0, 0.0, 0.0, 1.0))
[INFO] [stdout] 404 | |         .down_from(ids.blue_outer, 20.0)
[INFO] [stdout] 405 | |         .set(ids.red_convex, ui)
[INFO] [stdout]     | |________________________________^
[INFO] [stdout]     |
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 400 |     while let Some(i) = widget::Slider::new(app.convex_hull_color.0, 0.0, 1.0)
[INFO] [stdout]     |     ~~~~~~~~~~~~~~~ ~~~
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 400 |     if let Some(i) = widget::Slider::new(app.convex_hull_color.0, 0.0, 1.0)
[INFO] [stdout]     |     ~~~~~~~~~~~~ ~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over an `Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> src/my_gui/run_mode.rs:410:14
[INFO] [stdout]     |
[INFO] [stdout] 410 |       for i in widget::Slider::new(app.convex_hull_color.1, 0.0, 1.0)
[INFO] [stdout]     |  ______________^
[INFO] [stdout] 411 | |         .label("green")
[INFO] [stdout] 412 | |         .label_color(conrod_core::color::WHITE)
[INFO] [stdout] 413 | |         .color(Color::Rgba(0.0, app.convex_hull_color.1, 0.0, 1.0))
[INFO] [stdout] 414 | |         .down_from(ids.red_convex, 20.0)
[INFO] [stdout] 415 | |         .set(ids.green_convex, ui)
[INFO] [stdout]     | |__________________________________^
[INFO] [stdout]     |
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 410 |     while let Some(i) = widget::Slider::new(app.convex_hull_color.1, 0.0, 1.0)
[INFO] [stdout]     |     ~~~~~~~~~~~~~~~ ~~~
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 410 |     if let Some(i) = widget::Slider::new(app.convex_hull_color.1, 0.0, 1.0)
[INFO] [stdout]     |     ~~~~~~~~~~~~ ~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over an `Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> src/my_gui/run_mode.rs:420:14
[INFO] [stdout]     |
[INFO] [stdout] 420 |       for i in widget::Slider::new(app.convex_hull_color.2, 0.0, 1.0)
[INFO] [stdout]     |  ______________^
[INFO] [stdout] 421 | |         .label("blue")
[INFO] [stdout] 422 | |         .label_color(conrod_core::color::WHITE)
[INFO] [stdout] 423 | |         .color(Color::Rgba(0.0, 0.0, app.convex_hull_color.2, 1.0))
[INFO] [stdout] 424 | |         .down_from(ids.green_convex, 20.0)
[INFO] [stdout] 425 | |         .set(ids.blue_convex, ui)
[INFO] [stdout]     | |_________________________________^
[INFO] [stdout]     |
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 420 |     while let Some(i) = widget::Slider::new(app.convex_hull_color.2, 0.0, 1.0)
[INFO] [stdout]     |     ~~~~~~~~~~~~~~~ ~~~
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 420 |     if let Some(i) = widget::Slider::new(app.convex_hull_color.2, 0.0, 1.0)
[INFO] [stdout]     |     ~~~~~~~~~~~~ ~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over an `Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> src/shared_shit.rs:260:19
[INFO] [stdout]     |
[INFO] [stdout] 260 |       for (x, y) in widget::XYPad::new(app.ball_xy[0], min_x, max_x, app.ball_xy[1], min_y, max_y)
[INFO] [stdout]     |  ___________________^
[INFO] [stdout] 261 | |         .label("BALL XY")
[INFO] [stdout] 262 | |         .wh_of(ids.button)
[INFO] [stdout] 263 | |         .align_middle_y_of(ids.button)
[INFO] [stdout] 264 | |         .align_middle_x_of(ids.canvas)
[INFO] [stdout] 265 | |         .parent(ids.canvas)
[INFO] [stdout] 266 | |         .set(ids.xy_pad, ui)
[INFO] [stdout]     | |____________________________^
[INFO] [stdout]     |
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 260 |     while let Some((x, y)) = widget::XYPad::new(app.ball_xy[0], min_x, max_x, app.ball_xy[1], min_y, max_y)
[INFO] [stdout]     |     ~~~~~~~~~~~~~~~      ~~~
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 260 |     if let Some((x, y)) = widget::XYPad::new(app.ball_xy[0], min_x, max_x, app.ball_xy[1], min_y, max_y)
[INFO] [stdout]     |     ~~~~~~~~~~~~      ~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over an `Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> src/shared_shit.rs:312:21
[INFO] [stdout]     |
[INFO] [stdout] 312 |       for new_freq in widget::NumberDialer::new(app.sine_frequency, min, max, decimal_precision)
[INFO] [stdout]     |  _____________________^
[INFO] [stdout] 313 | |         .down(60.0)
[INFO] [stdout] 314 | |         .align_middle_x_of(ids.canvas)
[INFO] [stdout] 315 | |         .w_h(160.0, 40.0)
[INFO] [stdout] 316 | |         .label("F R E Q")
[INFO] [stdout] 317 | |         .set(ids.number_dialer, ui)
[INFO] [stdout]     | |___________________________________^
[INFO] [stdout]     |
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 312 |     while let Some(new_freq) = widget::NumberDialer::new(app.sine_frequency, min, max, decimal_precision)
[INFO] [stdout]     |     ~~~~~~~~~~~~~~~        ~~~
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 312 |     if let Some(new_freq) = widget::NumberDialer::new(app.sine_frequency, min, max, decimal_precision)
[INFO] [stdout]     |     ~~~~~~~~~~~~        ~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/stitcher/types.rs:129:28
[INFO] [stdout]     |
[INFO] [stdout] 129 |                     panic!(format!("Outer: {:?}; Inner: {:?}. Should never happen.", outer_amt, inner_amt))
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 129 -                     panic!(format!("Outer: {:?}; Inner: {:?}. Should never happen.", outer_amt, inner_amt))
[INFO] [stdout] 129 +                     panic!("Outer: {:?}; Inner: {:?}. Should never happen.", outer_amt, inner_amt)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 97 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 2 previous errors; 47 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0425`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `sars` (bin "sars" test) due to 3 previous errors; 47 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "192e51f2c0b4dd67cee9039652849351eb8459d8ee0b87116eeb583eb8fd570e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "192e51f2c0b4dd67cee9039652849351eb8459d8ee0b87116eeb583eb8fd570e", kill_on_drop: false }`
[INFO] [stdout] 192e51f2c0b4dd67cee9039652849351eb8459d8ee0b87116eeb583eb8fd570e
